package com.legal.service.user;

import java.time.Duration;

/**
 * 速率限流服务
 * @author xiaopeng
 * @version 1.0
 */
public interface RateLimitService {
    /**
     * 滑动窗口限流检查
     *
     * @param key         限流key
     * @param maxAttempts 最大尝试次数
     * @param windowSize  窗口大小
     * @return 是否允许
     */
    boolean checkSlidingRateLimit(String key, int maxAttempts, Duration windowSize);

    /**
     * 滑动窗口预检查
     */
    boolean peekSlidingRateLimit(String key, int maxAttempts, Duration windowSize);
}
